using System;
using System.Collections.Generic;
using System.Drawing;

namespace MDAControlsFramework.Helpers {

	public delegate void MDAMouseEventHandler(object sender, MDAMouseEventArgs e);

	public class MDAMouseEventArgs: EventArgs {
		private Point _firstPoint;
		private Point _actualPoint;
		private bool _shortWay;
		private bool _longWay;
		private bool _hold;

		public Point FirstPoint {
			get {
				return _firstPoint;
			}
			set {
				_firstPoint = value;
			}
		}

		public Point ActualPoint {
			get {
				return _actualPoint;
			}
			set {
				_actualPoint = value;
			}
		}


		public bool ShortWay {
			get {
				return _shortWay;
			}
			set {
				_shortWay = value;
			}
		}

		public bool LongWay {
			get {
				return _longWay;
			}
			set {
				_longWay = value;
			}
		}

		public bool Hold {
			get {
				return _hold;
			}
			set {
				_hold = value;
			}
		}


		public MDAMouseEventArgs(Point firstPoint, Point actualPoint, bool shortWay, bool longWay, bool hold) {
			this._firstPoint = firstPoint;
			this._actualPoint = actualPoint;
			this._shortWay = shortWay;
			this._longWay = longWay;
			this._hold = hold;
		}
	}


	public delegate void MDADataChangeHandler(object sender, MDADataChangeArgs e);

	public class MDADataChangeArgs: EventArgs {
		private object _oldValue = null;
		private object _newValue = null;
		private List<object> _values = null;

		public object NewValue {
			get {
				return _newValue;
			}
			set {
				_newValue = value;
			}
		}

		public object OldValue {
			get {
				return _oldValue;
			}
			set {
				_oldValue = value;
			}
		}

		public List<object> Values {
			get {
				return _values;
			}
			set {
				_values = value;
			}
		}

		public MDADataChangeArgs() {
		}

		public MDADataChangeArgs(object oldValue, object newValue) {
			_oldValue = oldValue;
			_newValue = newValue;
		}

		public MDADataChangeArgs(List<object> values) {
			_values = values;
		}

		public MDADataChangeArgs(object oldValue, object newValue, List<object> values) {
			_oldValue = oldValue;
			_newValue = newValue;
			_values = values;
		}
	}
}